home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / MacMETH 3.2.1 / MacMETH Manual 1992 / Manual Examples / EventExample.MOD < prev    next >
Encoding:
Text File  |  1992-10-09  |  1.7 KB  |  65 lines  |  [TEXT/MEDT]

  1. MODULE EventExample;
  2.  
  3.     (* This module demonstrates event handling. This example doesn't make much    *)
  4.     (* sense, but a sensible example would be much longer...                       *)
  5.  
  6.       FROM    EventBase     IMPORT     mouseDown, mouseUp, keyDown, Point, EventRecord,
  7.                                 PushTask, PopTask, PollEventTasks;
  8.                         
  9.       FROM    InOut         IMPORT     WriteString, WriteInt, Write, WriteLn;
  10.   
  11.       VAR    MouseTask, KeyTask    : INTEGER;
  12.                Quit                   : BOOLEAN;
  13.        
  14.       PROCEDURE TrackMouse(VAR Event : EventRecord) : BOOLEAN;
  15.   
  16.       BEGIN
  17.         IF (Event.what # mouseDown) & (Event.what # mouseUp) THEN
  18.               RETURN FALSE
  19.         END (* IF *);
  20.         IF Event.what = mouseDown THEN
  21.               WriteString("You pressed the mouse button!  Coordinates : (");
  22.         ELSE
  23.               WriteString("You released the mouse button! Coordinates : (");
  24.         END (* IF *);
  25.         WriteInt(Event.where.h,3);
  26.         Write(",");
  27.         WriteInt(Event.where.v,3);
  28.         Write(")");
  29.         WriteLn;
  30.         RETURN TRUE
  31.       END TrackMouse;
  32.  
  33.   
  34.     PROCEDURE KeyPressed(VAR Event : EventRecord) : BOOLEAN;
  35.         VAR i :     RECORD
  36.                       CASE :CARDINAL OF
  37.                              0 : long  : LONGINT;
  38.                            |1 : hi,lo : CARDINAL
  39.                       END (* CASE *)
  40.                 END;
  41.           
  42.       BEGIN
  43.         IF (Event.what # keyDown) THEN
  44.             RETURN FALSE
  45.         END (* IF *);
  46.         WriteString("You pressed the key '");
  47.         i.long := Event.message;
  48.         Write(CHR(i.lo MOD 256));
  49.         Quit := (CHR(i.lo MOD 256) < " ");
  50.         Write("'");
  51.         WriteLn;
  52.         RETURN TRUE
  53.       END KeyPressed;
  54.   
  55. BEGIN (* EventExample *)
  56.       MouseTask    := PushTask(TrackMouse);
  57.       KeyTask       := PushTask(KeyPressed);
  58.       REPEAT
  59.         PollEventTasks
  60.       UNTIL Quit;
  61.       PopTask(KeyTask);
  62.      PopTask(MouseTask)
  63. END EventExample.
  64.  
  65.